chore: reconcile and clear validation artifacts
This commit is contained in:
parent
d0e3f96364
commit
697e833b62
9 changed files with 316 additions and 5 deletions
|
|
@ -4,7 +4,7 @@
|
|||
`UnrealHyperTwist/` is the live application root. Treat `UnrealHyperTwist/Source/UnrealHyperTwist/` as the primary first-party code surface and `UnrealHyperTwist/Config/` plus `Content/` as the active project shell. `UnrealHyperTwist/Plugins/UnrealMCPChong/` is the only maintained in-repo plugin fork; the other plugin folders are external copies and should stay untouched unless a plugin task explicitly names them. `docs/` contains working documentation, while `docs/refs/` is reference-only and may contain sensitive ops material. `mirrors/`, `zippedreposource/`, and the archived content folders at repo root are custody/reference storage, not the default edit target.
|
||||
|
||||
## Build, Test, and Development Commands
|
||||
Open `UnrealHyperTwist/UnrealHyperTwist.uproject` or `UnrealHyperTwist/UnrealHyperTwist.sln` in Visual Studio 2022 / Unreal Engine 5.7 for normal work. Use `git -C C:\HyperTwist status --short` before and after changes. The bootstrap CI check is defined in `.woodpecker/hypertwist-bootstrap.yml` and validates the presence of the Unreal project, source module root, and docs tree.
|
||||
Open `UnrealHyperTwist/UnrealHyperTwist.uproject` in Visual Studio 2022 / Unreal Engine 5.7 for normal work. A host-generated `UnrealHyperTwist/UnrealHyperTwist.sln` may be used while present, but it is disposable IDE state rather than repository authority. Use `git -C C:\HyperTwist status --short` before and after changes. The bootstrap CI check is defined in `.woodpecker/hypertwist-bootstrap.yml` and validates the presence of the Unreal project, source module root, and docs tree.
|
||||
|
||||
For Unreal C++ validation, the canonical Windows build command is:
|
||||
|
||||
|
|
@ -111,3 +111,9 @@ Operational rule:
|
|||
- if those safety conditions are not met, the older hard stop still governs and future instances must not fabricate the answer
|
||||
- when stopping at a live prepared decision boundary, future instances should state whether plain `continue` is allowed to adopt the displayed recommendation or whether explicit user selection is still required
|
||||
- HyperTwist-specific build-validation and remote-host safeguards remain higher authority where applicable
|
||||
|
||||
## Update - 2026-07-19 - Overnight Mode safe adjacent queue behavior
|
||||
|
||||
When `Overnight Mode`, `Continuity Mode`, stacked `continue`, or plain `c` is active, do not halt merely because a closeout lists several routine safe adjacent options. If the options are same-lane or same-boundary, low-ambiguity, non-destructive, lawful, and logically orderable, treat them as a safe adjacent execution queue. Pick the most complete professional order, execute the strongest branch first, then continue through the next adjacent branch while it remains safe and closure-improving.
|
||||
|
||||
Future instances must still stop for real boundaries: unresolved quiz/user value judgment, fresh donor-family selection without authority-backed winner, legal clean-room vs direct implementation uncertainty, destructive filesystem/mirror movement, external publication/provider mutation, missing credentials, or validation/packaging failure that changes the plan. Closeouts should name a recommended/default branch and a safe adjacent queue rather than forcing the operator to approve obvious housekeeping, evidence, packaging, documentation, reassessment, or same-lane closeout steps one by one.
|
||||
|
|
|
|||
|
|
@ -108,6 +108,8 @@ validation.
|
|||
- `makensis.log`: final compiler transcript
|
||||
- `pre-release-shortcut-failure-report.json`: superseded failure lineage
|
||||
- `post-task-hygiene-report.json`: doctrine-ordered artifact disposition
|
||||
- `post-task-hygiene-reconciliation-report.json`: duplicate proof and final
|
||||
retirement of the formerly protected Windows staging roots
|
||||
|
||||
## Remaining External Gates
|
||||
|
||||
|
|
@ -117,3 +119,23 @@ validation.
|
|||
- update-channel, rollback, and staged-rollout proof
|
||||
- real headset/controller observation
|
||||
- configured-provider, microphone, and audible-TTS observation
|
||||
|
||||
## Staging Retirement
|
||||
|
||||
The initial hygiene report conservatively retained
|
||||
`C:\HyperTwist_worktrees\phase10validate` and the package-production roots
|
||||
because complete duplicate proof had not yet cleared four relative symlinks.
|
||||
The additive reconciliation report closes that uncertainty.
|
||||
|
||||
The follow-up compared `19,789` regular snapshot files, isolated all `4`
|
||||
symlinks, matched `19,723` files byte-for-byte against the current VPS source,
|
||||
matched another `28` changed tracked files to committed history, and proved the
|
||||
remaining tracked differences were strictly superseded. No unique unlanded
|
||||
source was found.
|
||||
|
||||
The current Release 19 package then matched the retained Downloads delivery for
|
||||
all `145` package files and `1,920,300,068` bytes. The staging ZIP and installer
|
||||
also matched their retained Downloads copies exactly. This made every artifact
|
||||
under `C:\HyperTwist_worktrees` redundant, so the whole staging root was
|
||||
removed while the Release 19 operator deliveries, Release 17 rollback
|
||||
deliveries, and operator saved data were retained.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
"reportVersion": "ht-post-task-hygiene-reconciliation/v1",
|
||||
"generatedAtUtc": "2026-07-26T10:17:32Z",
|
||||
"doctrine": "docs/ops/HYPERTWIST_PACKET_CLEANUP_AND_REBUILDABLE_ARTIFACT_HYGIENE_2026-05-20.md",
|
||||
"reconciles": "docs/generated/alpha_test_20260726_installer/post-task-hygiene-report.json",
|
||||
"result": "passed-clean-with-protected-authority",
|
||||
"sourceSnapshotProof": {
|
||||
"path": "C:\\HyperTwist_worktrees\\phase10validate",
|
||||
"regularFilesCompared": 19789,
|
||||
"relativeSymlinksInspected": 4,
|
||||
"byteIdenticalCurrentFiles": 19723,
|
||||
"byteIdenticalCurrentBytes": 2236011229,
|
||||
"differentFiles": 40,
|
||||
"missingByExactLinuxPath": 26,
|
||||
"differentTrackedFiles": 39,
|
||||
"trackedFilesMatchingCommittedHistory": 28,
|
||||
"trackedFilesStrictlySupersededByCurrentSource": 11,
|
||||
"caseOrEncodingAliasesMatchingRetainedCustodyByHash": 6,
|
||||
"generatedOrTransportOnlyMissingFiles": 20,
|
||||
"corruptCustodyCopies": [
|
||||
{
|
||||
"path": "SpeedCubeDB/speedcubedb.com/a/3x3/ZBLLAS/ZBLL_AS_56.html",
|
||||
"disposition": "removed-with-snapshot",
|
||||
"reason": "The Windows copy was null-padded from byte 329216 through EOF; the intact retained VPS custody copy remains authoritative."
|
||||
}
|
||||
],
|
||||
"uniqueUnlandedSourceFound": false,
|
||||
"disposition": "verified-safe-to-remove"
|
||||
},
|
||||
"release19ParityProof": {
|
||||
"packagePayloadFilesCompared": 145,
|
||||
"packagePayloadBytesCompared": 1920300068,
|
||||
"packagePayloadMissing": 0,
|
||||
"packagePayloadDifferent": 0,
|
||||
"worktreeZip": {
|
||||
"sizeBytes": 1093537260,
|
||||
"sha256": "630963f96c681fc49130cbc56c6c850008d4cddda7e83f2ee9c077c52d7709a9",
|
||||
"matchedDownloadsCopy": true
|
||||
},
|
||||
"worktreeInstaller": {
|
||||
"sizeBytes": 851049086,
|
||||
"sha256": "c31ed6b0b2ae1feb449c27e484d72dc2e07ba220e3cdafa4c3605429d638e0ea",
|
||||
"matchedDownloadsCopy": true
|
||||
}
|
||||
},
|
||||
"safeDeletion": {
|
||||
"windowsStagingRoot": {
|
||||
"path": "C:\\HyperTwist_worktrees",
|
||||
"topLevelTargetCount": 8,
|
||||
"initialFileCount": 20352,
|
||||
"measuredSizeBytes": 11684633205,
|
||||
"allocatedBytesRecovered": 11720404992,
|
||||
"removed": true
|
||||
},
|
||||
"vpsRebuildables": {
|
||||
"path": "/home/dev/src/HyperTwist",
|
||||
"measuredFileCount": 42600,
|
||||
"measuredSizeBytes": 2056975723,
|
||||
"allocatedBytesRecovered": 2141913088,
|
||||
"classes": [
|
||||
"node dependency trees",
|
||||
"web build and test output",
|
||||
"Unreal generated state and logs",
|
||||
"repo-owned analyzer runtime materializations",
|
||||
"Visual Studio generated project state",
|
||||
"generated token inventory",
|
||||
"empty untracked directories"
|
||||
],
|
||||
"removed": true
|
||||
},
|
||||
"staleProcesses": {
|
||||
"terminatedProcessCount": 2,
|
||||
"scope": "orphaned July 23 HyperTwist archive receive command only",
|
||||
"reverseTunnelPreserved": true
|
||||
}
|
||||
},
|
||||
"protectedRetention": [
|
||||
{
|
||||
"path": "C:\\Users\\Anthracite Ace\\Downloads\\HyperTwist-Alpha-Test-20260723-R19",
|
||||
"reason": "Current verified portable Release 19 delivery."
|
||||
},
|
||||
{
|
||||
"path": "C:\\Users\\Anthracite Ace\\Downloads\\HyperTwist-Alpha-Test-20260723-R19.zip",
|
||||
"reason": "Current verified portable Release 19 archive."
|
||||
},
|
||||
{
|
||||
"path": "C:\\Users\\Anthracite Ace\\Downloads\\HyperTwist-Alpha-Test-20260723-R19-Setup.exe",
|
||||
"reason": "Current validated Release 19 installer."
|
||||
},
|
||||
{
|
||||
"path": "C:\\Users\\Anthracite Ace\\Downloads\\HyperTwist-Alpha-Test-20260723",
|
||||
"reason": "Explicit Release 17 rollback delivery."
|
||||
},
|
||||
{
|
||||
"path": "C:\\Users\\Anthracite Ace\\Downloads\\HyperTwist-Alpha-Test-20260723.zip",
|
||||
"reason": "Explicit Release 17 rollback archive."
|
||||
},
|
||||
{
|
||||
"path": "C:\\Users\\Anthracite Ace\\AppData\\Local\\UnrealHyperTwist\\Saved",
|
||||
"reason": "Operator settings, saves, replays, logs, and diagnostics."
|
||||
},
|
||||
{
|
||||
"path": "/home/dev/src/HyperTwist/docs/refs and named custody/reference roots",
|
||||
"reason": "Protected evidence and provenance, not rebuildable packet output."
|
||||
}
|
||||
],
|
||||
"finalVerification": {
|
||||
"windowsStagingRootAbsent": true,
|
||||
"currentRelease19DeliveriesPresent": true,
|
||||
"release17RollbackDeliveriesPresent": true,
|
||||
"operatorSavedDataPresent": true,
|
||||
"vpsUntrackedDryRunEmpty": true,
|
||||
"protectedIgnoredCustodyPresent": true,
|
||||
"temporaryManifestFilesRemoved": true,
|
||||
"temporaryCleanupHelperRemoved": true,
|
||||
"todoJsonPolicy": "ignored"
|
||||
}
|
||||
}
|
||||
|
|
@ -435,6 +435,33 @@ This is `isolated-current-host` evidence because no clean VM or Windows Sandbox
|
|||
was available. The executable is `NotSigned`; trusted Authenticode remains a
|
||||
production gate rather than an inferred Alpha capability.
|
||||
|
||||
### 2026-07-26 final staging retirement
|
||||
|
||||
The earlier installer hygiene pass conservatively retained
|
||||
`C:\HyperTwist_worktrees\phase10validate` plus historical and current package
|
||||
production roots while four relative source-tree symlinks blocked complete
|
||||
duplicate proof. That uncertainty is now closed by:
|
||||
|
||||
`docs/generated/alpha_test_20260726_installer/post-task-hygiene-reconciliation-report.json`
|
||||
|
||||
The reconciliation:
|
||||
|
||||
- isolated all `4` relative symlinks without traversing their targets
|
||||
- compared `19,789` regular snapshot files against the VPS source and Git
|
||||
history
|
||||
- found no unique unlanded source
|
||||
- proved all `145` current package files and `1,920,300,068` bytes match the
|
||||
retained Downloads Release 19 folder
|
||||
- proved the staging and Downloads ZIPs share SHA-256
|
||||
`630963f96c681fc49130cbc56c6c850008d4cddda7e83f2ee9c077c52d7709a9`
|
||||
- proved the staging and Downloads installers share SHA-256
|
||||
`c31ed6b0b2ae1feb449c27e484d72dc2e07ba220e3cdafa4c3605429d638e0ea`
|
||||
|
||||
All `8` artifacts under `C:\HyperTwist_worktrees` were therefore removed and
|
||||
the now-empty staging root was deleted. The current Release 19
|
||||
folder/ZIP/installer, explicit Release 17 rollback folder/ZIP, and operator
|
||||
saved data remain protected.
|
||||
|
||||
## Operator diagnostics
|
||||
|
||||
The delivered Alpha uses stock Shipping configuration and first-party direct
|
||||
|
|
|
|||
|
|
@ -401,3 +401,78 @@ When the safety threshold is satisfied:
|
|||
|
||||
This update supersedes any earlier reading of this doctrine that treated every
|
||||
prepared decision boundary as equally non-adoptable under plain `continue`.
|
||||
|
||||
## Update - 2026-07-19 - non-halting safe adjacent option queues
|
||||
|
||||
Routine safe branch menus must not become user-decision gates merely because the
|
||||
assistant can name several useful next moves.
|
||||
|
||||
When a closeout presents multiple adjacent options and those options are all:
|
||||
|
||||
- same roadmap boundary or same release/validation/implementation authority
|
||||
chain
|
||||
- low ambiguity
|
||||
- non-destructive
|
||||
- lawful under the current role and license posture
|
||||
- not blocked by missing source, unresolved quiz, legal boundary, or failing
|
||||
validation
|
||||
- naturally orderable by dependency or maturity
|
||||
|
||||
future instances must treat the options as an execution queue rather than as a
|
||||
reason to halt.
|
||||
|
||||
The correct behavior is:
|
||||
|
||||
1. choose the most complete professional order
|
||||
2. execute the strongest safe branch first
|
||||
3. continue into the next safe branch when it is still adjacent and
|
||||
closure-improving
|
||||
4. skip or defer only the branch that has a real stop condition
|
||||
5. document the queue and the skipped/deferred branch explicitly
|
||||
|
||||
This rule exists because the operator prefers complete, holistic, professional
|
||||
execution over repeated micro-approval prompts. The assistant is expected to
|
||||
guide the roadmap, not repeatedly ask the operator to choose between obvious
|
||||
adjacent housekeeping, release-readiness, documentation, validation, or
|
||||
same-lane closeout steps.
|
||||
|
||||
### Recommended/default branch rule
|
||||
|
||||
Every substantial closeout that lists options must identify the default branch.
|
||||
|
||||
Default branch means:
|
||||
|
||||
- the branch the assistant should take automatically on `continue` when no real
|
||||
blocker exists
|
||||
- the branch that best advances the declared lane toward truthful close
|
||||
- not merely the first option listed
|
||||
|
||||
If more than one option is safe and important, the default branch should be a
|
||||
sequence rather than a single micro-step.
|
||||
|
||||
### Non-halting examples
|
||||
|
||||
Do not halt for:
|
||||
|
||||
- release evidence archive policy vs packaging preflight when both are safe and
|
||||
adjacent
|
||||
- documentation propagation plus status pointer updates
|
||||
- post-slice reassessment plus closeout plus roadmap pointer update
|
||||
- bounded validation result packet plus status supersession when validation
|
||||
already ran
|
||||
- safe same-family P1/P2/reassessment sequence where the lane authority is clear
|
||||
|
||||
Instead, do the safe sequence in the best order.
|
||||
|
||||
### Halting examples remain unchanged
|
||||
|
||||
Still halt for:
|
||||
|
||||
- a true donor-family choice where no authority-backed winner exists
|
||||
- a quiz row that requires the user's value judgment
|
||||
- a legal clean-room vs direct implementation boundary
|
||||
- a destructive filesystem or mirror operation not already authorized
|
||||
- a validation failure that changes the next plan
|
||||
- a packaging or deployment action that would publish externally, overwrite a
|
||||
canonical workspace, or require credentials not already present in the safe
|
||||
execution environment
|
||||
|
|
|
|||
|
|
@ -233,3 +233,44 @@ The governing interpretation is now explicit:
|
|||
This field is mandatory because deterministic continuation now includes a narrow
|
||||
safe path for recommendation adoption, and future instances must not leave that
|
||||
truth implicit.
|
||||
|
||||
## Update - 2026-07-19 - safe adjacent queue and default branch fields
|
||||
|
||||
Closeouts must no longer present routine safe adjacent options as if every
|
||||
option requires fresh operator selection.
|
||||
|
||||
When multiple options are listed, the closeout must include these fields:
|
||||
|
||||
- recommended/default branch
|
||||
- safe adjacent queue on `continue`
|
||||
- branches that are safe to execute automatically
|
||||
- branches that require a real halt
|
||||
|
||||
Required interpretation:
|
||||
|
||||
- if the listed options are all safe, adjacent, and logically orderable, plain
|
||||
`continue` means execute them in the best professional sequence rather than
|
||||
halt for a menu choice
|
||||
- if one option is safest and another is also important, execute the safest one
|
||||
first and then the next one if it remains adjacent
|
||||
- if a later option crosses a true donor-family, quiz, legal, destructive,
|
||||
external publishing, or failed-validation boundary, stop only at that later
|
||||
real boundary
|
||||
|
||||
Expanded closeout-shape repertoire:
|
||||
|
||||
- recommended/default branch: execute `release evidence archive policy ->
|
||||
bounded packaging preflight` because both are first-party, adjacent, and
|
||||
non-destructive
|
||||
- recommended/default branch: execute `P1 -> P2 -> reassessment -> closeout`
|
||||
because the same-family lane is already source-real and authority-backed
|
||||
- recommended/default branch: stop before donor-family implementation because
|
||||
no next family has been selected from live authority
|
||||
- safe adjacent queue on `continue`: `documentation propagation -> status
|
||||
pointers -> commit/push under the active repository landing policy`
|
||||
- halt-required branch: public deployment, signing, provider mutation,
|
||||
destructive mirror movement, or unresolved quiz answer
|
||||
|
||||
The closeout must be written so that a sleeping operator can stack `continue`
|
||||
without the assistant veering into an unrelated project, while also not forcing
|
||||
the operator to approve every small obvious step.
|
||||
|
|
|
|||
|
|
@ -130,7 +130,9 @@ Current notable solution/package entry surfaces:
|
|||
- solution: `/home/dev/src/VectorShell/VectorShell.sln`
|
||||
- `HyperTwist`
|
||||
- root: `/home/dev/src/HyperTwist`
|
||||
- solution: `/home/dev/src/HyperTwist/HyperTwist.sln`
|
||||
- Unreal project: `/home/dev/src/HyperTwist/UnrealHyperTwist/UnrealHyperTwist.uproject`
|
||||
- optional host-generated solution:
|
||||
`/home/dev/src/HyperTwist/UnrealHyperTwist/UnrealHyperTwist.sln`
|
||||
- `ScriptoriumAI`
|
||||
- root: `/home/dev/src/ScriptoriumAI`
|
||||
- solution: `/home/dev/src/ScriptoriumAI/ScriptoriumAI.sln`
|
||||
|
|
|
|||
|
|
@ -2,6 +2,28 @@
|
|||
|
||||
This note records how `HyperTwist` should be represented in Visual Studio while the codebase is still being assembled.
|
||||
|
||||
## Current Supersession - 2026-07-26
|
||||
|
||||
HyperTwist now has a real Unreal application root. The tracked authority is:
|
||||
|
||||
- `UnrealHyperTwist/UnrealHyperTwist.uproject`
|
||||
- `UnrealHyperTwist/Source/`
|
||||
- `UnrealHyperTwist/Config/`
|
||||
|
||||
The ignored repo-root `HyperTwist.sln`, `HyperTwist.vcxproj`,
|
||||
`HyperTwist.vcxproj.filters`, and `HyperTwist.vcxproj.user` files were retired
|
||||
after the root project became the exact giant file collector prohibited below.
|
||||
They indexed custody snapshots, mirrors, and generated Unreal output and were
|
||||
not a valid build surface.
|
||||
|
||||
For normal work, open the `.uproject`. Visual Studio or Unreal may generate
|
||||
`UnrealHyperTwist/UnrealHyperTwist.sln` and related `Intermediate/ProjectFiles`
|
||||
state on a Windows host when needed. Those generated files remain disposable
|
||||
IDE state and are not source authority.
|
||||
|
||||
The historical guidance below remains useful as the reason not to recreate a
|
||||
repo-root catch-all project.
|
||||
|
||||
## Current Rule
|
||||
|
||||
The repo-root `HyperTwist.vcxproj` should be treated as a lightweight workspace shell, not as the real application project.
|
||||
|
|
|
|||
|
|
@ -238,9 +238,7 @@ function Get-ProductConfig {
|
|||
}
|
||||
'HyperTwist' {
|
||||
$entries = [System.Collections.Generic.List[object]]::new()
|
||||
$entries.Add((New-RepositoryEntry -Key 'app' -Name 'HyperTwist App' -RepoUrl '' -LocalPath 'C:\HyperTwist' -Purpose 'First-party product repository.' -Language 'mixed' -IncludeMode 'project' -Storage 'app-repo' -ProjectFiles @(
|
||||
[ordered]@{ name = 'HyperTwist'; path = 'C:\HyperTwist\HyperTwist.vcxproj'; kind = 'cpp' }
|
||||
) -License 'first-party' -LicenseStatus 'first-party' -MirrorClass 'app-repo' -WorkflowRole 'first-party' -ModelAAllowedSourceAccess $true -ModelBAllowedSourceAccess $true))
|
||||
$entries.Add((New-RepositoryEntry -Key 'app' -Name 'HyperTwist App' -RepoUrl '' -LocalPath 'C:\HyperTwist' -Purpose 'First-party Unreal product repository. Open C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject; generated Visual Studio project files are disposable host state.' -Language 'mixed' -IncludeMode 'root' -Storage 'app-repo' -ProjectFiles @() -License 'first-party' -LicenseStatus 'first-party' -MirrorClass 'app-repo' -WorkflowRole 'first-party' -ModelAAllowedSourceAccess $true -ModelBAllowedSourceAccess $true -Notes @('Canonical IDE/build entry: C:\HyperTwist\UnrealHyperTwist\UnrealHyperTwist.uproject.', 'Do not regenerate the retired repo-root catch-all HyperTwist.vcxproj.')))
|
||||
|
||||
foreach ($entry in (Get-HyperTwistMirrorEntries -PermissiveMirrorsRoot $permissiveMirrorsRoot -RestrictiveMirrorsRoot $restrictiveMirrorsRoot -CleanRoomSpecsRoot $cleanRoomSpecsRoot)) {
|
||||
$entries.Add($entry)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue