Commit Graph
69 Commits
Author SHA1 Message Date
ilaandClaude Fable 5 36d43cdf16 Require pausing on requirements conflicts; ignore local run scripts
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Add a governance rule to AGENTS.md: when implementation reveals that
requirements cannot be satisfied as written (e.g. a capability the
frozen protocol cannot express), the agent must stop, record both
document sources and the technical reason in the task's execution log,
and request adjudication instead of silently narrowing scope or
altering a frozen protocol. After adjudication, every affected document
must be updated before work resumes or a new task is split off -
updating only the architecture/task docs while leaving
docs/02-requirements.md stale invalidates the acceptance criteria, which
is the drift observed in the Phase 5 trial conflict.

Also gitignore the local run-modern.bat / run-win7.bat dev scripts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 11:10:17 +08:00
ilaandClaude Fable 5 63dc40275f Move trial authorization out of MVP scope
Resolve the requirements-vs-architecture conflict found in the Phase 5
review. License v1 is frozen at nine fields with no expiry field
(perpetual is a bool; update/rebind policy are opaque labels), so it
cannot express a trial period. The implementation and architecture docs
correctly recorded that boundary, but 02-requirements still listed trial
as a P0 capability and an MVP acceptance criterion.

Decision: trial moves to V1.1.

- 02-requirements: drop trial from the user role and P0 feature list;
  acceptance now reads 'authorization state consistent between box and
  sub-apps'; add a V1.1 trial row naming the protocol prerequisite; add
  a scope row stating perpetual:false is display-only and never expires,
  and supports_trial does not grant local trial.
- 00-ai-start-here: remove trial from 'MVP does', add it to 'MVP does
  not' with the protocol reason.
- 04-architecture: development order step 5 no longer lists trial/rebind
  as MVP work.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:43:21 +08:00
ilaandClaude Fable 5 1bc4504913 Add Phase 5 review cross-check ruling
Concede two errors in the original review: it cited 01-vision.md for a
'perpetual offline use' promise the vision never makes (only 'offline
verifiable'), and it described the clock-rollback check too broadly -
that check only covers same-list rollback, not an older list paired
with a correspondingly rolled-back clock.

Accept Codex's O5 (verified: StoreRevocations replaces the cache after
signature check with no cross-list monotonicity, so signed revocation
lists can be replayed) and O6, plus four precision refinements. Add the
threat-boundary rationale for O5: monotonicity does not stop a local
attacker but does stop distribution-channel replay, a ~38-day revocation
rollback window is exploitable without any clock control, and benign CDN
staleness alone silently rolls back revocation state - making the
'reject older list' check a correctness requirement, not just hardening.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 10:28:08 +08:00
ilaandClaude Fable 5 5db6031e4b Add Phase 5 licensing review (T-501~T-503)
Code-level audit of the authorization chain: domain-separated machine
hash with no raw identifiers in errors or storage, strict License v1
verification (base64 re-encode round-trip, exact 9-field shape,
timestamp round-trip, machine-hash binding), and revocation state with
clock-rollback defense and revoked-before-expiry ordering. Snapshots to
the UI carry no license ID, signature, path or raw Windows identifiers;
defaults fail closed. Catalog/License/Revocation share one canonical
JSON implementation.

No security defect found. Records two product decisions needed: the
revocation list is a hard dependency for any authorization (missing or
>38-day-old list blocks all launches, in tension with the offline
licensing vision and lacking a distribution plan), and trial is a P0
requirement plus MVP acceptance criterion that is deliberately not
implemented, leaving 02-requirements in conflict with the architecture
and task docs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 09:42:30 +08:00
ila 76f6108496 Implement authorization import and revocation checks (T-503) 2026-07-20 09:07:30 +08:00
ila b4453130de Define authorization integration task (T-503) 2026-07-20 08:43:24 +08:00
ila cd76f7f900 Implement offline license verification (T-502) 2026-07-20 01:29:40 +08:00
ila c51ff30c54 Define license verification task (T-502) 2026-07-20 01:12:04 +08:00
ila 8d81276fd9 Implement machine fingerprint hashing (T-501) 2026-07-20 00:19:13 +08:00
ila 94ea334d1c Define machine fingerprint contract (T-501) 2026-07-20 00:11:56 +08:00
ila 24e9862192 Harden self-update recovery (T-617) 2026-07-20 00:05:41 +08:00
ila ea1d6c8ee4 Define self-update recovery remediation (T-617) 2026-07-19 23:53:27 +08:00
ilaandClaude Fable 5 a2cda73deb Add Phase 4 launch/update/self-update review with cross-check ruling
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Code-level audit of T-401~T-403: launch has no command-injection surface
(AppID-only request, entrypoint must be in recorded installed files,
safepath+JoinUnder+Lstat, no-arg exec.Command and parameterless
ShellExecuteExW), update never force-kills (confirm + natural-exit wait
only), and self-update is journaled, rollback-capable and health-gated
before backup deletion. Confirms Phase 3 O1 is closed by T-401's
preSwitchCheck.

Ruling accepts Codex's follow-up: O4 (self-flagged T-403 fault-injection
and mid-phase Recover test gaps - all four claims verified) and O5
(split assembly prerequisites instead of lumping them under T-502).
Adds a low-cost path to close O4 mostly via the existing DirectorySyncer
seam and filesystem permission tricks, without new production seams.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 23:44:01 +08:00
ila 2c561894fd Implement catalog startup diagnostics (T-616) 2026-07-19 22:22:46 +08:00
ila 06234e11bf Define catalog startup task (T-616) 2026-07-19 22:09:16 +08:00
ila 13004218cf Implement self-update recovery (T-403) 2026-07-19 22:00:38 +08:00
ila 2900deba4f Define self update task (T-403) 2026-07-19 21:42:23 +08:00
ila 339beaa9b3 Implement app update orchestration (T-402) 2026-07-19 21:39:33 +08:00
ila fda52a57ca Define app update orchestration task (T-402) 2026-07-19 21:27:26 +08:00
ila 87083c387f Implement controlled app launch (T-401) 2026-07-19 21:10:59 +08:00
ila d0cf333394 Define process and launch task (T-401) 2026-07-19 20:47:45 +08:00
ila df6c243b21 Preserve staging I/O failure causes (T-615) 2026-07-19 20:28:56 +08:00
ila d1603c52b6 Define I/O diagnostic remediation task (T-615) 2026-07-19 20:13:03 +08:00
ilaandClaude Fable 5 09f56478d3 Add Phase 3 review cross-check ruling
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Adjudicate Codex's review correction: concede three overstatements in
the original review (M3 loop not actually complete - InstallService has
no production assembly and T-401 launch is unbuilt; scope 'no security
defect' to T-302/T-303; O2 mischaracterized - ENOSPC during io.Copy is
misclassified as zip_corrupt with a broken error chain, escalate to P1;
O1 fix was flawed - recheck IsRunning explicitly instead of inferring
app_running from rename failure). Add finding: disk-full surfaces at
write/sync/close with three different codes, so the O2 fix must span the
whole write->sync->close sequence.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 20:06:55 +08:00
ilaandClaude Fable 5 1ad00f8ef2 Add Phase 3 install integration review (T-301~T-303)
Code-level audit of the verified install chain: hash-before-parse and
single-file-handle TOCTOU defenses in verified_package.go, strict
app.json parse cross-checked against the signed Catalog, untrusted
download verified against Catalog Size/SHA256, mandatory non-bypassable
pre-extract disk/running checks, and a complete stable failure-code
enum. No security defect found; records five minor optimizations, the
top being the IsRunning TOCTOU (recheck before the current->backup
rename).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 19:44:57 +08:00
ila ae3f64c407 Add install preflight safeguards (T-303) 2026-07-18 18:14:25 +08:00
ila 449b183ca3 Define failure handling task (T-303) 2026-07-18 18:04:01 +08:00
ila 14589abb31 Integrate verified installation flow (T-302) 2026-07-18 17:55:01 +08:00
ila 6575c9ad9b Define installation integration task (T-302) 2026-07-18 17:35:11 +08:00
ilaandClaude Fable 5 a72e7b04dc Add T-606~T-614 remediation review; ignore editor workspace
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
Verify at code level that the Phase 1/2 review findings were actually
closed (not just self-reported): icon cache concurrency + LRU + bounded
fetch (T-606), UI-thread icon delivery (T-607), install durability with
Windows FlushFileBuffers / POSIX dir sync (T-613), ZIP central-directory
preflight (T-612), and catalog signature cross-impl vectors (T-614).
All confirmed real. Records three residuals (R1 real power-loss
validation, R2 per-file fsync cost, R3 singleflight ctx caveat).

Also gitignore *.code-workspace (per review recommendation).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 17:05:00 +08:00
ila 0c1b7662c6 Freeze catalog signature vectors (T-614) 2026-07-18 16:46:17 +08:00
ila 9e5f3f4840 Define catalog signature vector task (T-614) 2026-07-18 16:36:31 +08:00
ila 20596a7de4 Fence installation transaction durability (T-613) 2026-07-18 16:28:49 +08:00
ila 84befee70f Define installation durability task (T-613) 2026-07-18 16:14:12 +08:00
ila 0f69fa330e Preflight ZIP central directory metadata (T-612) 2026-07-18 15:40:44 +08:00
ila 65ff7a3f23 Define ZIP central directory preflight task (T-612) 2026-07-18 15:29:39 +08:00
ila 320b83d929 Implement unsafe icon cache diagnostics (T-611) 2026-07-18 15:18:29 +08:00
ila 6455fec811 Define unsafe icon cache diagnostics task (T-611) 2026-07-18 14:31:53 +08:00
ila e9386d26e7 Split Gio shell responsibilities (T-610) 2026-07-18 14:23:02 +08:00
ila 75b1803564 Define Gio shell responsibility split task (T-610) 2026-07-17 18:21:05 +08:00
ila 171572973b Stabilize visible item snapshots (T-609) 2026-07-17 17:31:46 +08:00
ila ed9ded2110 Define visible snapshot lifecycle task (T-609) 2026-07-17 10:49:58 +08:00
ila 1b7f72e658 Add adapter interaction contracts (T-608)
Harness governance / validate (push) Has been cancelled
Phase 0 build gate / verify (push) Has been cancelled
2026-07-17 10:41:40 +08:00
ila 0705948d74 Define adapter interaction contract task (T-608) 2026-07-17 10:34:14 +08:00
ila 0945fe93dc Route icon results through UI events (T-607) 2026-07-17 10:21:44 +08:00
ila fba672381e Define icon UI event delivery task (T-607) 2026-07-17 09:54:47 +08:00
ila f1cc7308db Harden icon cache concurrency (T-606) 2026-07-17 09:38:25 +08:00
ila 8873a5261d Define icon cache hardening task (T-606) 2026-07-17 09:10:20 +08:00
ila 6fd19d0f43 Harden Windows package paths (T-605) 2026-07-16 23:56:19 +08:00
ila f7a803d944 Define Windows path hardening task (T-605) 2026-07-16 23:36:39 +08:00