| 2026-07-18 |
Vocabulary RATIFIED: Option A + H1 (utterance quoted) -- PHASE 4 COMPLETE; G2 CLOSED
...
Four-state vocabulary (OPEN/BLOCKED/HELD/CLOSED); H1 makes the Phase-5
token migration mechanically complete via the extractor scan and defines
event words (VOID/REOPENED/SUPERSEDED) as row-history, never states. All
seven GA-R rulings + the vocabulary are ratified with paired
question/utterance Status blocks, drafts diffable per B2. G2 gate row
CLOSED same-commit per GA-R1 rule 8 (ruling-type closure per GA-R6 E1).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R7 RATIFIED (operator, amendments G1+G2+G3, question+answer quoted); vocabulary A/B staged
...
G3 = memory is scratch, durable observations graduate to repo surfaces;
G1 = stage-close memory review joins the GA-R6 close-out set; G2 =
auto-memory posture (enabled for operator sessions, disabled for probe/
audit sessions incl. the Phase-6 exit trio). All seven GA-R rulings now
RATIFIED. Stage-status vocabulary A/B (GA-F10) staged as the final
Phase-4 item. G2 gate row updated same-commit per GA-R1 rule 8.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R4 RATIFIED (operator, amendments F1+F2+F3, question+answer quoted); GA-R7 draft staged
...
F1 = cap binds at session close, live sections never rotated; F2 =
post-hoc closure of orphaned sessions (no status weight); F3 =
security-ledger.md is the SEC register of record, ledger carries
pointer+count only. GA-R7 (memory governance) delivered as DRAFT. G2 row
updated same-commit per GA-R1 rule 8.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R6 RATIFIED (operator, amendments E1+E2+E3, question+answer quoted); GA-R4 draft staged
...
E1 = gate typing (ruling-type gates close per GA-R5); E2 = harnessed
closers, vacuous-pass closures VOID (DOCFIX-194 class); E3 = no
conditional close, remainders split into their own gate rows. GA-R4
(ledger rotation) delivered as DRAFT. G2 row updated same-commit per
GA-R1 rule 8.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R2 RATIFIED (operator, amendments D1+D2, question+answer quoted); GA-R6 draft staged
...
D1 caps changelog creation at one per session; D2 widens the Phase-5
sweep to every docs/ file with manifested consolidation commits and
defines the under-25 counting scope. GA-R6 delivered as DRAFT (executable
definition of done; 5/0/6 superseded by the CURRENT-STATE section-5
mechanism). G2 gate row updated same-commit per GA-R1 rule 8.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R1 RATIFIED (operator, amendments C1+C2, question+answer quoted); GA-R2 draft staged
...
C2 folded into rule 1 (measurement beats the document); C1 is new rule 8
(status-changing commits must touch CURRENT-STATE.md -- applied to this
very commit: G2 gate row updated in-line). GA-R2 delivered as DRAFT per
B2. Phase-5 repo-lint check for C1 queued.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R5 RATIFIED (operator, amendments B1+B2, question+answer quoted); GA-R1 draft staged
...
GA-R5 Status block records both the question as presented and the exact
ratification utterance per B1's own terms; consolidated text extends
rules 2/5 (B1) and rule 4 (B2, draft-diffability -- this commit itself
satisfies it for GA-R1). GA-R1 delivered as DRAFT with the size budget,
rotation, and as-built division directives baked in.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-R3 RATIFIED (operator, amendments A1+A2, utterance quoted); GA-R5 draft staged
...
Phase-4 rulings file opened. GA-R3 recorded with the exact operator
utterance in the Status block and the consolidated as-amended text;
implementation queued for Phase 5 (class tags, D-121..129 review, A1
D-129 split). GA-R5 delivered as DRAFT, awaiting ruling.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
G11 SIGNED: operator signature recorded in CURRENT-STATE.md (own commit per directive)
...
Signature block section 11 quotes the operator utterance verbatim; header
status and G11 gate row updated. Signed against the section-10 run at
8cdbf4a (zero divergences).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA register: standing proof-of-push rule (ls-remote hash on every completion report)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA register: record the Phase-4 hold/order/format directive (was in-session only)
...
Operator guard applied: an unrecorded directive is not a directive. The
Phase-4 delivery order (GA-R3, R5, R1, R2, R6, R4, R7, vocab A/B), the
one-per-exchange format, and the hold-until-G11 rule are now in the
register. No GA-R text exists yet; Phase 4 remains HELD pending G11.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA register: Phase-3 ACCEPTED (external review); GA-F02 scope addition (banner demotion)
...
Reviewer cold-verified eight probe-cited lines; 21/21 judged earned.
GA-F02's Phase-5 fix now explicitly demotes the readiness doc's fresh-
session banner to a one-line pointer at the G9 canonical entry path, so
probe hole H1 cannot survive the sweep. Phase 4 HELD pending the
operator's personal G11 pass.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA Phase 3: grounding test PASSED -- 3 probes, 21/21; scorecard + line-neutral amendments
...
Three clean-context probes (repo-only, independent, read-only) each scored
7/7 with citations; all oriented CLAUDE.md -> SKILL -> CURRENT-STATE.md
unaided; all correctly concluded no apply is justifiable today. Zero wrong
or unanswerable items; double-weight rule had nothing to attach to. Holes:
H1 (minor, entry-doc divergence -- G9 row now names the canonical entry
path) + H2 (note only). Scorecard + normalized probe returns:
docs/audit/phase3-grounding-test-20260718.md. CURRENT-STATE.md amendments
are line-neutral (347 lines, within the GA-R1 draft budget). G1 CLOSED.
This amended version is the G11 review copy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA register: Phase-2 ACCEPTED (external review); Phase-4 drafting directives recorded
...
Operator directives from the Phase-3 dispatch: G11 signs the post-probe
version; GA-R1 gains a ~350-line size budget + same-commit rotation to
as-builts; as-built division of authority (STATUS vs CONFIGURATION-of-
record); probe integrity rules. Recorded pre-dispatch so probes see only
committed state.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA Phase 2: CURRENT-STATE.md -- single status authority (DRAFT pending operator signature)
...
Authored by the fresh-context Phase-2 ground-truth agent from Phase-1
captures, tofu state, live measurement, and git history only (changelog
prose / ledger narrative / memory excluded per charter). Expected outer
plan count recorded as UNRESOLVED pending D-130 (last captured 7/2/7,
pre-reboot gate 5/0/6) per operator direction. 15 open gates, open
decision queue as exact operator questions, measured pin table, cold-
session re-derivation footer. Section 9 reworded token-free (GA-F15).
DRAFT: unsigned until charter Phase-6 item 5. Phase 3 does not start
until Chat review completes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA-F15: ledger-scan counter self-inflation by audit outputs -- found, reworded, re-verified
...
Phase-2 authoring surfaced that the audit's own records inflated ledger-scan's
mention-derived counters twice (env snapshot wrapped line -> BUNDLEFIX +1;
CURRENT-STATE.md draft section 9 -> DOCFIX +1, inside the sentence claiming
DOCFIX was unaffected). Both surfaces reworded token-free; re-run confirms
true values D=130, DOCFIX=197, BUNDLEFIX=052. Scanner hardening deferred to
Phase 5 per the freeze. Also: GA-F14 addendum (autostart absent from state;
the collapse claim was structurally impossible, per the Phase-2 sharpening).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA register amendments: GA-F03 evidence pointer corrected; GA-F01/GA-F10 operator directions
...
- GA-F03: the 1.12.3 pin lives at opentofu/README.md:41, NOT root README
(verified by grep; root README carries no pin). Notes the extractor scope
gap (opentofu/README.md is outside the doc scan set).
- GA-F01: authoring direction recorded -- expected plan count is UNRESOLVED
pending D-130; CURRENT-STATE.md must not pick a number.
- GA-F10: the legal stage-status vocabulary is an explicit Phase-4 operator
A/B ruling.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|

GA Phase 1: deterministic record inventory + measured evidence (freeze upheld)
...
- scripts/record-audit.py + tests/record-audit/ (24/24; gauntlet 69 GREEN):
doc census, status-claim extractor, reference integrity. Exit 0 == zero
contradiction groups (the Phase-6 re-run criterion).
- docs/audit/record-inventory.md: 179 files, 858 claim rows, 12 contradiction
groups (plan counts, version pins, stage statuses), reference-rot counts.
- docs/audit/outer-plan-20260718.txt: captured outer plan -- 7 add / 2 change
/ 7 destroy; voffice1 seed volume forces replacement. THE citable
plan-count source from here forward.
- docs/audit/env-snapshot-20260718.md: measured host/guest/toolchain state
(vcloud, -136 bookend done, autostart enable, tofu 1.12.4, MAAS 3.7.2,
LXD 5.21.5).
- docs/audit/grounding-audit-20260718.md: findings register GA-F01..GA-F14
incl. the operator provenance rulings on the two memory files and the
07-16 06:41 churn-mechanism correlation.
No fixes applied; no existing file touched. Findings only, per the charter
freeze. Phase 2 (CURRENT-STATE.md rebuild) starts from this evidence base.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZV3uqyU9oWoFTcwiE4a21
|
GA: grounding-audit charter + proposed skill additions (freeze in effect; audit session charter)
|
Ledger: session-close bookend -- DC0 apply STOPPED, superseded by grounding audit charter
...
Bookend for the 2026-07-18 session. Records what was established (source-verified
autostart bounce path, the /tmp cloudinit root cause, the corrected 3-VM blast
radius), what remains open (D-130 mechanism ruling, verifications 7 and 8, the
doc-integrity list), and points at the full record in
docs/finding-20260718-voffice1-cloudinit-seed-replace.md (43b29d7).
Notes that this session is superseded by a grounding audit charter arriving via
git, to be read first by whoever picks this up.
Nothing applied, no module touched, no state written. Gate before any apply
stands: plan must read EXACTLY 5 add / 0 change / 6 destroy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YArUfQQe6VasfTvzzb9D6P
|

Findings: post-reboot outer plan would BOUNCE Office1 headend + edge -- DC0 apply STOPPED
...
Read-only orientation + pre-apply re-verification. NOTHING applied, no module
touched, no state written. Records findings only, before any fix work.
WHAT WAS FOUND
Outer `tofu plan` post-reboot = 7 add / 2 change / 7 destroy, NOT the committed
5 add / 2 in-place / 6 destroy in docs/dc0-deploy-readiness.md. The entire delta
is `voffice1` (the live headend), not DC0 scope.
1. DOMINANT RISK -- the 2 "in-place" changes bounce both guests. VERIFIED FROM
PRIMARY SOURCE (dmacvicar/libvirt v0.9.8 internal/provider/domain_resource.go):
Update's only no-bounce path (L1090) requires
`domainConfigUnchanged && runningChanged && autostartUnchanged`. An
autostart-only diff has runningChanged=FALSE, so it falls through to
stopDomainIfRunning -> DomainUndefine -> DomainDefineXML -> DomainSetAutostart.
The guest is STOPPED. Applies to voffice1 AND office1-opnsense.
2. `-refresh-only` CANNOT fix it. Read is self-gating (L938):
`if isImport || (!state.Autostart.IsNull() && ...)`. State's Autostart is NULL,
so autostart is never read back. Matches empirical `grep -c autostart` = 0 on
both domains. (isImport DOES read it -- `tofu import` is a candidate
bounce-free reconcile path.)
3. Seed-volume replacement is STRUCTURAL, not drift. modules/cloudinit-vm chains
libvirt_cloudinit_disk.seed (stages the ISO in /tmp) -> libvirt_volume.seed
(create.content.url = that /tmp path). The 2026-07-17 host reboot cleared /tmp,
so the disk re-creates with a NEW random filename, so the url changes, so the
volume force-replaces -- while attached to the RUNNING domain as sda. The real
ISO is intact. Recurs after every host reboot. Warrants D-130 (next-free
confirmed 2026-07-18).
ALSO RECONCILED
- Bookend item (a) CLOSED (measured): vcloud host patched to 6.8.0-136 and rebooted
2026-07-17; apt clean; no reboot-required. D-127 autostart chain PROVEN by a real
unattended reboot -- both VMs + all 3 SSH targets recovered with zero manual
intervention; base-leg ok, NetBox 302, edge 0% loss. Item (b) STAYS OPEN (edge
guest still on 14.3-RELEASE-p16; a host reboot does not patch it).
- Stage-3 "HELD NetBox addressing" blocker in dc-dc-deployment-workflow.md is STALE.
Measured live against the apex: 172.31.0.0/30 (Transit, scope VR1 DC0), the
172.31.0.0/24 container, and 10.12.8.2/22 all PRESENT. Needs DOCFIX-196.
- Version drift: OpenTofu on the jumphost is v1.12.4; README.md:41 says v1.12.3.
Coincidental to the above -- the cause is /tmp, not the version bump.
TWO OF MY OWN CLAIMS CORRECTED IN-FLIGHT (both were inferences, per hard rule 2)
- Cited platform-traps.md 1e as the warrant for the autostart bounce. 1e was
measured on a MEMORY change and does NOT transfer to an autostart-only diff. The
conclusion held but the reasoning was wrong; replaced with the source evidence
above. 1e's operational rule ("0 to change is the only assurance") stands.
- Claimed the /tmp trap hits "all 9 DC0 node VMs and every containment VM". WRONG,
retracted. libvirt_cloudinit_disk appears in exactly ONE module (cloudinit-vm),
instantiated TWICE (main.tf:181 voffice1, main.tf:361 vvr1_dc0). The 9 nodes use
modules/node-vm = blank-disk PXE, NO cloud-init; edges use REST config (D-113(a2)).
Real exposure = voffice1 + vvr1-dc0 (+vvr1-dc1) = 3.
PRIOR-SESSION ROOT CAUSE
docs/changelog-20260717-d127-iac-autostart-and-guest-updates.md asserts "the 2
in-place collapse to 0 once the bookend sets those two autostart live" and "no
forces-replacement on any existing". Both are FALSE. The collapse prediction was
wrong WHEN WRITTEN, not made wrong by the reboot -- it inferred that `virsh
autostart` would be picked up by refresh, without reading the provider's Read path.
Correcting those assertions is queued as Class 1 doc-integrity work.
OPERATOR RULING (2026-07-18): do NOT proceed to DC0 leaving these behind. Fix
scripts/data/settings to 100% correct first; the post-teardown redeploy must be
error-free from these deliverables.
repo-lint: 0 fail (1 legacy WARN).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YArUfQQe6VasfTvzzb9D6P
|
Permission posture: ask-list mutation surfaces so they PROMPT (not classifier-deny)
...
Root cause (claude-code-guide, doc-cited): in auto mode, unmatched mutations
fall to the classifier and get HARD-DENIED (no approval prompt). ask/deny rules
are evaluated BEFORE the classifier, so ask-listing the mutation surfaces forces
an approve/deny/adjust prompt -- the intended gating.
.claude/settings.json (operator-applied; editing the permission file is itself
gated): + ask for *opnsense-api.sh POST, *opnsense-plugins.sh apply, *tofu
apply/destroy/import/state rm, *--commit, Edit(.claude/settings*.json); + allow
for the edge GET + opnsense-plugins.sh list. deny + guard hook unchanged.
Changelog + ledger note + carry-forward (verify prompts post-reload) added.
Revert: git revert this commit, or cp .claude/settings.json.bak over it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUBUyinU4sBAT4HV1b9vSz
|

D-129: build the OPNsense edge plugin profile-installer + sharpen pins
...
Autonomous processing of D-129 items that need no operator keyboard. Repo-only;
NOTHING applied to the cloud (live plugin install stays classifier-gated).
- NEW scripts/opnsense-plugins.sh + tests/opnsense-plugins/ (17/17): named-profile
installer over the D-113 firmware API. Installs ONE plugin at a time + polls
upgradestatus (the firmware-lock lesson), delegates auth to opnsense-api.sh,
warns os-qemu-guest-agent != a working agent, offline --dry-run. Closes the
"build the reusable installer" pin.
- D-129 + dc-dc-phase2 pin: installer recorded as BUILT (use it, not build it);
qga channel logged as an OPT-IN-var design (default OFF -> no office1/DC0-plan
side-effect; dmacvicar 0.9.8 mechanism-to-verify); os-git-backup operator ask.
- Gauntlet ALL GREEN (68), repo-lint 0-fail.
Revert: git rm the script+harness; revert the doc/runbook edits.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUBUyinU4sBAT4HV1b9vSz
|
Ledger: RETIRE boot-race carry-forward -- D-126 base-leg PROVEN 2026-07-18
...
Operator-forced test reboot (host boot 2026-07-17 23:38:41) exercised the
After=libvirtd+poll race. All four checks PASS; the unit journal logs
"added leg" (leg absent at boot -> unit created it), the strong proof. The
D-126 base-leg oneshot self-heals office1-local's dropped L3 leg unattended.
jessea123 added to systemd-journal group + relog so future sessions read
unit journals without sudo.
Revert: restore the prior carry-forward wording (informational only).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUBUyinU4sBAT4HV1b9vSz
|
D-129 verify: qga installed-but-non-functional; iperf lost to firmware lock
...
Reconcile records to the measured 2026-07-18 install verification (operator ran
the firmware POSTs via `!`; agent verified read-only). No cloud mutation here.
- os-qemu-guest-agent: package installed, NON-FUNCTIONAL -- daemon off + the
opnsense-edge module defines no org.qemu.guest_agent.0 libvirt channel
(guest-ping fails). Functional enablement = channel-in-module + service-enable
+ edge restart -> DEFERRED; new DC edges born with the channel.
- os-iperf: did NOT install -- back-to-back firmware POSTs collided on the
OPNsense firmware lock. Re-run pending; profile-installer must be 1-at-a-time
+ poll upgradestatus.
- D-129 Verification note + phase2 pin + as-built row + ledger reconciled.
Revert: git revert; nothing installed/applied by this commit.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUBUyinU4sBAT4HV1b9vSz
|

D-129 partial-rule: adopt VR1 edge plugin profile + pin the rest at deploy steps
...
Operator directive 2026-07-18 ("install the recommendations + pin the rest").
Doc/runbook-only; the LIVE install is operator-gated (auto-mode classifier
blocked the agent POST) and pending verification -- no cloud mutation here.
- D-129 PARTIALLY RULED (status line kept OPEN so ledger-scan still tracks the
4 sub-decisions: COS-edge scope, os-frr, os-tailscale, edge-NTP). VR1 profile
{os-qemu-guest-agent, os-iperf} adopted; pinned-at-steps mapping added.
- dc-dc-phase2 (DC-edge section): pin the VR1 profile at edge bring-up + build
the reusable opnsense-api profile-installer there.
- dc-dc-phase6 Step 10: pin os-node_exporter gated on the COS-edge scope call.
- vr1-office1-as-built: FreeBSD base 14.3->15.1 recorded; directed plugins noted.
- session-ledger + machine block synced.
Revert: git revert this commit; nothing was installed/applied on the cloud.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUBUyinU4sBAT4HV1b9vSz
|
Ledger+D-129: OPNsense 26.7 edge review + version drift + key-push record
...
Doc-only recording (nothing installed/applied on the live cloud):
- docs/opnsense-edge-addon-review-20260718.md (NEW): full 104-plugin catalog
review of office1-opnsense @ 26.7, sorted by minimize-delta-to-Roosevelt.
Findings: os-git-backup installed but UNCONFIGURED (no backup running).
- D-129 (PROPOSED): edge plugin/add-on base profile; operator rules buckets.
- vr1-office1-as-built.md: edge version drift 26.1.11 -> 26.7 recorded.
- session-ledger.md: 26.7 update + review note; operator personal key pushed
to the 3 Office1 Linux VMs + edge (GUI, durable); machine-block re-seeded
(next-free D=130, D-129 PROPOSED).
Revert: delete the review doc + D-129 entry; revert the as-built/ledger notes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUBUyinU4sBAT4HV1b9vSz
|
| 2026-07-17 |
Ledger: forced test-reboot marker for the base-leg boot-race proof
...
Operator is forcing a vcloud reboot to prove site-baseleg-office1.service
self-heals the base leg at boot (carry-forward #1). The rebooting session dies
with the host; this marker gives the post-reboot session the exact 4-step
verification (status=0 / journal 'added leg' / check ok / ssh voffice1 live) and
the retire-or-fix decision. Continuity lives in the committed ledger.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QMKdXCquMnh1jKH2sWXPMg
|
Ledger: mark 2026-07-17 base-leg/D-128 session CLOSED (two carry-forwards recorded)
...
Session deliverables closed + committed (1958063, 6f26b55): post-restart sweep,
site-baseleg.sh + D-126 amendment, D-128 operating model, gap register item 20,
skill per-DC discipline. Two honest carry-forwards kept OPEN, NOT marked done:
(1) boot-race proof (unit installed+enabled; unproven until an actual reboot);
(2) DC leg rows (deferred-until-measured per hard rule 2). Machine-derived block
re-seeded: next-free D = 129 (D-128 ADOPTED).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QMKdXCquMnh1jKH2sWXPMg
|
Gap register #20: durable host->site reachability CLOSED (Office1); skill carries the per-DC discipline
...
- docs/dc-dc-deployment-workflow.md: new tooling-gap item 20 -- the durable
host->isolated-site base leg had no owning tool; CLOSED for Office1 via
scripts/site-baseleg.sh (installed+enabled 2026-07-17; boot-race unproven until
a reboot). Documents the DC generalization so the gap does not reopen per-DC.
- SKILL.md: operating-model invariant extended -- durable host->site reach is
standing per-SITE tooling (DCs included): at each DC standup MEASURE the reach
and, if the DC net is ISOLATED, add a MEASURED site-baseleg.sh leg row + install
as part of standup DoD (never an inferred DC IP; harness enforces it).
Doc-only follow-up to 1958063. Nothing merged to main (stage-close).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QMKdXCquMnh1jKH2sWXPMg
|